package ve.usb.ddp.hibernate;

import ve.usb.cohesion.runtime.LocalDate;import java.util.HashSet;
import java.util.Set;

public class Paa implements java.io.Serializable, ve.usb.cohesion.runtime.Auditable {

    /** Creates a new instance of Paa */
    public Paa() {}
    
    /**
     * Holds value of property id.
     */
    private Long id;

    /**
     * Getter for property id.
     * @return Value of property id.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Holds value of property idPaa.
     */
    private long idPaa;

    /**
     * Getter for property idPaa.
     * @return Value of property idPaa.
     */
    public long getIdPaa() {
        return this.idPaa;
    }

    /**
     * Setter for property idPaa.
     * @param idPaa New value of property idPaa.
     */
    public void setIdPaa(long idPaa) {
        this.id = this.idPaa = idPaa;
    }

    /**
     * Holds value of property universidad.
     */
    private String universidad = "";

    /**
     * Getter for property universidad.
     * @return Value of property universidad.
     */
    public String getUniversidad() {
        return this.universidad;
    }

    /**
     * Setter for property universidad.
     * @param universidad New value of property universidad.
     */
    public void setUniversidad(String universidad) {
        this.universidad = universidad;
    }

    /**
     * Holds value of property pais.
     */
    private String pais = "";

    /**
     * Getter for property pais.
     * @return Value of property pais.
     */
    public String getPais() {
        return this.pais;
    }

    /**
     * Setter for property pais.
     * @param pais New value of property pais.
     */
    public void setPais(String pais) {
        this.pais = pais;
    }

    /**
     * Holds value of property modalidad.
     */
    private String modalidad = "";

    /**
     * Getter for property modalidad.
     * @return Value of property modalidad.
     */
    public String getModalidad() {
        return this.modalidad;
    }

    /**
     * Setter for property modalidad.
     * @param modalidad New value of property modalidad.
     */
    public void setModalidad(String modalidad) {
        this.modalidad = modalidad;
    }

    /**
     * Holds value of property fecha_inicio.
     */
    private java.util.Date fecha_inicio;

    /**
     * Getter for property fecha_inicio.
     * @return Value of property fecha_inicio.
     */
    public java.util.Date getFecha_inicio() {
        return this.fecha_inicio;
    }

    /**
     * Setter for property fecha_inicio.
     * @param fecha_inicio New value of property fecha_inicio.
     */
    public void setFecha_inicio(java.util.Date fecha_inicio) {
        if (fecha_inicio==null || fecha_inicio instanceof LocalDate)
            this.fecha_inicio = fecha_inicio;
        else this.fecha_inicio = new LocalDate(fecha_inicio);
    }

    /**
     * Holds value of property fecha_culminacion.
     */
    private java.util.Date fecha_culminacion;

    /**
     * Getter for property fecha_culminacion.
     * @return Value of property fecha_culminacion.
     */
    public java.util.Date getFecha_culminacion() {
        return this.fecha_culminacion;
    }

    /**
     * Setter for property fecha_culminacion.
     * @param fecha_culminacion New value of property fecha_culminacion.
     */
    public void setFecha_culminacion(java.util.Date fecha_culminacion) {
        if (fecha_culminacion==null || fecha_culminacion instanceof LocalDate)
            this.fecha_culminacion = fecha_culminacion;
        else this.fecha_culminacion = new LocalDate(fecha_culminacion);
    }

    /**
     * Holds value of property fuentes_financiamiento.
     */
    private Set<PaaFuenteFinanciamiento> fuentes_financiamiento = new HashSet<PaaFuenteFinanciamiento>();

    /**
     * Getter for property fuentes_financiamiento.
     * @return Value of property fuentes_financiamiento.
     */
    public Set<PaaFuenteFinanciamiento> getFuentes_financiamiento() {
        return this.fuentes_financiamiento;
    }

    /**
     * Setter for property fuentes_financiamiento.
     * @param fuentes_financiamiento New value of property fuentes_financiamiento.
     */
    public void setFuentes_financiamiento(Set<PaaFuenteFinanciamiento> fuentes_financiamiento) {
        this.fuentes_financiamiento = fuentes_financiamiento;
    }

    /**
     * Add an element to set property fuentes_financiamiento
     * and sets elements's property paa.
     * @param element New element to be added to fuentes_financiamiento.
     */
    public void addToFuentes_financiamiento(PaaFuenteFinanciamiento element) {
        element.setPaa(this);
        fuentes_financiamiento.add(element);
    }

    /**
     * Removes and old element from set fuentes_financiamiento
     * and sets element's property paa to null.
     * @param old The element to be removed from fuentes_financiamiento
     */
    public void removeFromFuentes_financiamiento(PaaFuenteFinanciamiento old) {
        fuentes_financiamiento.remove(old);
        old.setPaa(null);
    }
    /**
     * Holds value of property tipo_financiamiento.
     */
    private String tipo_financiamiento = "";

    /**
     * Getter for property tipo_financiamiento.
     * @return Value of property tipo_financiamiento.
     */
    public String getTipo_financiamiento() {
        return this.tipo_financiamiento;
    }

    /**
     * Setter for property tipo_financiamiento.
     * @param tipo_financiamiento New value of property tipo_financiamiento.
     */
    public void setTipo_financiamiento(String tipo_financiamiento) {
        this.tipo_financiamiento = tipo_financiamiento;
    }

    /**
     * Holds value of property observaciones.
     */
    private Set<Observacion_Paa> observaciones = new HashSet<Observacion_Paa>();

    /**
     * Getter for property observaciones.
     * @return Value of property observaciones.
     */
    public Set<Observacion_Paa> getObservaciones() {
        return this.observaciones;
    }

    /**
     * Setter for property observaciones.
     * @param observaciones New value of property observaciones.
     */
    public void setObservaciones(Set<Observacion_Paa> observaciones) {
        this.observaciones = observaciones;
    }

    /**
     * Add an element to set property observaciones
     * and sets elements's property paa.
     * @param element New element to be added to observaciones.
     */
    public void addToObservaciones(Observacion_Paa element) {
        element.setPaa(this);
        observaciones.add(element);
    }

    /**
     * Removes and old element from set observaciones
     * and sets element's property paa to null.
     * @param old The element to be removed from observaciones
     */
    public void removeFromObservaciones(Observacion_Paa old) {
        observaciones.remove(old);
        old.setPaa(null);
    }
    /**
     * Holds value of property profesor.
     */
    private Profesor profesor;

    /**
     * Getter for property profesor.
     * @return Value of property profesor.
     */
    public Profesor getProfesor() {
        return this.profesor;
    }

    /**
     * Setter for property profesor.
     * @param profesor New value of property profesor.
     */
    public void setProfesor(Profesor profesor) {
        this.profesor = profesor;
    }
    /**
     * Holds value of property conceptos.
     */
    private Set<PaaConceptosReebolso> conceptos = new HashSet<PaaConceptosReebolso>();

    /**
     * Getter for property conceptos.
     * @return Value of property conceptos.
     */
    public Set<PaaConceptosReebolso> getConceptos() {
        return this.conceptos;
    }

    /**
     * Setter for property conceptos.
     * @param conceptos New value of property conceptos.
     */
    public void setConceptos(Set<PaaConceptosReebolso> conceptos) {
        this.conceptos = conceptos;
    }

    /**
     * Add an element to set property conceptos
     * and sets elements's property paa.
     * @param element New element to be added to conceptos.
     */
    public void addToConceptos(PaaConceptosReebolso element) {
        element.setPaa(this);
        conceptos.add(element);
    }

    /**
     * Removes and old element from set conceptos
     * and sets element's property paa to null.
     * @param old The element to be removed from conceptos
     */
    public void removeFromConceptos(PaaConceptosReebolso old) {
        conceptos.remove(old);
        old.setPaa(null);
    }
    /**
     * Holds value of property requiere_reembolso.
     */
    private boolean requiere_reembolso;

    /**
     * Getter for property requiere_reembolso.
     * @return Value of property requiere_reembolso.
     */
    public boolean getRequiere_reembolso() {
        return this.requiere_reembolso;
    }

    /**
     * Setter for property requiere_reembolso.
     * @param requiere_reembolso New value of property requiere_reembolso.
     */
    public void setRequiere_reembolso(boolean requiere_reembolso) {
        this.requiere_reembolso = requiere_reembolso;
    }

    /**
     * Holds value of property se_reembolso.
     */
    private boolean se_reembolso;

    /**
     * Getter for property se_reembolso.
     * @return Value of property se_reembolso.
     */
    public boolean getSe_reembolso() {
        return this.se_reembolso;
    }

    /**
     * Setter for property se_reembolso.
     * @param se_reembolso New value of property se_reembolso.
     */
    public void setSe_reembolso(boolean se_reembolso) {
        this.se_reembolso = se_reembolso;
    }

    /**
     * Holds value of property rindio_cuentas.
     */
    private boolean rindio_cuentas;

    /**
     * Getter for property rindio_cuentas.
     * @return Value of property rindio_cuentas.
     */
    public boolean getRindio_cuentas() {
        return this.rindio_cuentas;
    }

    /**
     * Setter for property rindio_cuentas.
     * @param rindio_cuentas New value of property rindio_cuentas.
     */
    public void setRindio_cuentas(boolean rindio_cuentas) {
        this.rindio_cuentas = rindio_cuentas;
    }

    /**
     * Holds value of property fecha_rindio_cuentas.
     */
    private java.util.Date fecha_rindio_cuentas;

    /**
     * Getter for property fecha_rindio_cuentas.
     * @return Value of property fecha_rindio_cuentas.
     */
    public java.util.Date getFecha_rindio_cuentas() {
        return this.fecha_rindio_cuentas;
    }

    /**
     * Setter for property fecha_rindio_cuentas.
     * @param fecha_rindio_cuentas New value of property fecha_rindio_cuentas.
     */
    public void setFecha_rindio_cuentas(java.util.Date fecha_rindio_cuentas) {
        if (fecha_rindio_cuentas==null || fecha_rindio_cuentas instanceof LocalDate)
            this.fecha_rindio_cuentas = fecha_rindio_cuentas;
        else this.fecha_rindio_cuentas = new LocalDate(fecha_rindio_cuentas);
    }




    public String toString() {
        return "<Paa id='C" + this.id +
      //idPaa
      "\" universidad =\"" + universidad +
      "\" pais =\"" + pais +
      "\" modalidad =\"" + modalidad +
      "\" fecha_inicio =\"" + fecha_inicio +
      "\" fecha_culminacion =\"" + fecha_culminacion +
      //fuentes_financiamiento
      "\" tipo_financiamiento =\"" + tipo_financiamiento +
      //observaciones
        ((profesor==null) ? "" : "\" profesor =\"C" + profesor.getId()) +

      //conceptos
      "\" requiere_reembolso =\"" + requiere_reembolso +
      "\" se_reembolso =\"" + se_reembolso +
      "\" rindio_cuentas =\"" + rindio_cuentas +
      "\" fecha_rindio_cuentas =\"" + fecha_rindio_cuentas +

        "'/>";
    }

}